#ifndef N_LIST
#define N_LIST

#include <linux/list.h>
#include <linux/vmalloc.h>

struct n_ent
{
	u32 neigh_id_o;
	u32 free_space_o;
	u32 network_load_o;
	u32 cpu_load_o;
	u32 num_proc_o;
	u32 last_upd_o;
};

struct nlist
{
    struct list_head nlhead;
    struct n_ent *nent;
};

//list creator, pouzit pri inicializacii
int create_nlist(void);

//list destructor, pouzit na konci
int destroy_nlist(void);

//vlozi entitu do nlistu
int insert_nent(struct n_ent *ne);

//najde entitu z listu podla nid, retnent je entita s danym ID, vrati -1 ked nenajde dane ID v nliste
int find_nent(unsigned int nid, struct n_ent *retnent);

//najde entitu z listu podla id v strukture ne, vrati -1 ked nenajde dane ID v nliste
int remove_nent(struct n_ent *ne);

//najde najlepsieho kandidata y nlistu, vrati jeho ID, ak je list prazdny, vrati -1
unsigned int find_best_nent(void);


#endif
